#include <dlfcn.h>      //动态加载库库头
int main(void)
{
    char src[] = "Hello Dymatic"        // 要计算的字符串
    int (*pStrLenFun)(char *str);       // 函数指针
    void *phandle = NULL;               // 库句柄
    char *perr = NULL;                  // 错误信息指针
    phandle = dlopen("./libstr.so",RTLD LAZY);      // 打开libstr.so动态链接库

    // 判断是否打开正确
    if (!phandle)                       // 打开错误
    {
        printf("Failed Load library!\n");
    }
    perr = dlerror();                   // 读取错误值
    if(perr != NULL)                    // 存在错误
    {
        printf("%s\n",perr);
        return 0;
    }    
    pStrLenFun = dlsym(phandle, "StrLen");      // 获取函数StrLen的地址
    perr = dlerror();
    if ( peer != NULL)
    {
        printf("%s\n",perr);
        return 0;
    }
    // 调用函数计算字符串的长度
    printf("the string length is: %d \n", pStrLenFun(src));
    dlclose(phandle);           // 关闭动态加载库
    return 0;
}